Occasionally-Connected Computing Interface

ABSTRACT

Described are computer-based methods and apparatuses, including computer program products, for allowing a user to switch between interfacing with a service through a network or through short message service (SMS). A chat service is executed through which a first user at a first computer can communicate directly with a second user at a second computer. A request is received from the first computer to enable the first user to interface with the chat service through a mobile device of the first user using SMS instead of through the network using the first computer. The chat service is configured to interface with the mobile device through SMS, including communicating chat information through SMS to the first user&#39;s mobile device, and communicating control information through SMS to the first user&#39;s mobile device such that the first user can control a full functionality of the chat service using SMS.

CROSSED-REFERENCES RELATED APPLICATIONS

This application is a continuation of U.S. Ser. No. 14/322,736, filedJul. 2, 2014, which is a continuation of U.S. Ser. No. 13/413,197, filedMar. 6, 2012, now U.S. Pat. No. 8,805,941, issued Aug. 12, 2014 thedisclosures of each of which are incorporated herein by reference in itsentirety for all purposes.

TECHNICAL FIELD

Various exemplary embodiments disclosed herein relate generally tocomputer-based methods and apparatuses, including computer programproducts, for an occasionally-connected computing interface.

BACKGROUND

Companies can use servers to provide services to remote computers (e.g.,online services) through interfaces on the remote computers. Forexample, a user can access the services by loading a webpage on a localcomputer that interfaces with the servers. The webpage can include anumber of controls, such as buttons, widgets, menu items, etc. thatallow the user to access and interact with the remotely-locatedserver(s) to access the full-range of services provided by the servers.As another example, the user can access the services by loading aprogram or other executable on the user's computer that is configured tointeract with the services provided by the remotely-located servers. Theexecutable can be similar to the webpage—the executable generates agraphical user interface (GUI) with various controls that allow the userto invoke the features of the service provided by the remote servers.

With the explosion of smart phones, personal digital assistants,tablets, and other mobile devices, the processing and displaycapabilities of these devices are often powerful enough to run similarexecutables on the mobile devices that can interface with the remoteservers. However, such programs or executables often consume a largeamount of the mobile device's processing power, memory, etc., causingthe mobile device's performance to decrease. Further, many of theseprograms can not be run on earlier-model mobile devices, which do nothave sufficient processing power.

SUMMARY

The computerized methods and apparatus disclosed herein allow a user toinvoke the full functionality of a service (e.g., that which is oftenutilized using a graphical interface at the user's computer, includingvarious buttons, menu items, etc.) using a mobile device's messagingservice (e.g., MMS, SMS). The user can further seamlessly switch betweenusing the mobile device and the user's computer to interact with theservice, without any impact on the user's session with the serviceand/or sessions with other remote computers (e.g., existing online chatsessions between the user, whether established through the user's mobilephone or computer, and the remote computers).

In one embodiment, a computerized method is featured. The computerizedmethod allows a user to switch between interfacing with a servicethrough a network or through short message service (SMS). The methodincludes executing, by a server computer, a chat service through which afirst user at a first computer can communicate directly with a seconduser at a second computer, both the first computer and the secondcomputer communicating with the chat service through a network. Themethod includes receiving from the first computer, by the servercomputer, a request to enable the first user to interface with the chatservice through a mobile device of the first user using short messageservice (SMS) instead of through the network using the first computer.The method includes configuring, by the server computer, the chatservice to interface with the mobile device through SMS, including (a)communicating chat information through SMS to the first user's mobiledevice and communicating chat information through the network to thesecond computer such that the second user is unaware the first userswitched to using the mobile device instead of the first computer, and(b) communicating control information through SMS to the first user'smobile device such that the first user can control a full functionalityof the chat service using SMS.

In another embodiment, a computer program product, tangibly embodied ina non-transitory computer-readable medium is featured. The computerprogram product includes instructions being configured to cause adata-processing apparatus to execute a chat service through which afirst user at a first computer can communicate directly with a seconduser at a second computer, both the first computer and the secondcomputer communicating with the chat service through a network. Thecomputer program product includes instructions being configured to causea data-processing apparatus to receive from the first computer a requestto enable the first user to interface with the chat service through amobile device of the first user using short message service (SMS)instead of through the network using the first computer. The computerprogram product includes instructions being configured to cause adata-processing apparatus to configure the chat service to interfacewith the mobile device through SMS, including (a) communicating chatinformation through SMS to the first user's mobile device andcommunicating chat information through the network to the secondcomputer such that the second user is unaware the first user switched tousing the mobile device instead of the first computer, and (b)communicating control information through SMS to the first user's mobiledevice such that the first user can control a full functionality of thechat service using SMS.

In another embodiment, a server computer is featured. The servercomputer allows a user to switch between interfacing with a servicethrough a network or through short message service (SMS). The servercomputer includes a processor and memory. The server computer isconfigured to execute a chat service through which a first user at afirst computer can communicate directly with a second user at a secondcomputer, both the first computer and the second computer communicatingwith the chat service through a network. The server computer isconfigured to receive from the first computer a request to enable thefirst user to interface with the chat service through a mobile device ofthe first user using short message service (SMS) instead of through thenetwork using the first computer. The server computer is configured toconfigure the chat service to interface with the mobile device throughSMS, including (a) communicating chat information through SMS to thefirst user's mobile device and communicating chat information throughthe network to the second computer such that the second user is unawarethe first user switched to using the mobile device instead of the firstcomputer, and (b) communicating control information through SMS to thefirst user's mobile device such that the first user can control a fullfunctionality of the chat service using SMS.

In other examples, any of the aspects above can include one or more ofthe following features. A request can be received from the first user'smobile device to interface with the chat service at a third computerinstead of the mobile device, and the chat service can be configured tointerface with the third computer. Configuring can include (a)communicating chat information through the network to the third computerand communicating chat information through the network to the secondcomputer such that the second user is unaware that the first userswitched to using the third computer instead of the mobile device, and(b) communicating control information through the network to the thirdcomputer such that the first user can use the full functionality of thechat service using the network.

In some examples, configuring the chat service to interface with thefirst user includes maintaining any chat sessions between the first userand the second user, any other users, or any combination thereof.Receiving the request can include receiving a request from the firstuser to change a status of the first user from online mode to mobilemode. All communications can be sent to the first user's mobile deviceusing SMS.

In other examples, an SMS request is received from the first user'smobile device to start a chat conversation with a third user at a thirdcomputer, and chat information is communicated through SMS to the firstuser's mobile device and communicating chat information to the thirdcomputer. Communicating chat information through SMS to the firstcomputer can include receiving a chat message from the second computer,and transmitting, using SMS, the chat message, and a chat identifier tothe first user's mobile device.

The techniques, which include both methods and apparatuses, describedherein can provide one or more of the following advantages. A service(e.g., provided by a server) can be accessed by a broad range of devicesand communication protocols, including a mobile phone's messagingservice. The user of the service can seamlessly switch between deviceswhile interacting with the service, giving the user a greaterflexibility to stay connected to the service using different devices andcommunication protcols. Additionally, by using a messaging service onthe mobile device instead of a stand-alone application or executable,the user can continue using the full-range of services without boggingdown the resources of the mobile device.

Other aspects and advantages of the present invention will becomeapparent from the following detailed description, taken in conjunctionwith the accompanying drawings, illustrating the principles of theinvention by way of example only.

BRIEF DESCRIPTION OF THE DRAWINGS

The foregoing and other aspects, features, and advantages will be morefully understood from the following description of various embodiments,when read together with the accompanying drawings.

FIG. 1 illustrates an exemplary system for supporting anoccasionally-connected computing interface;

FIG. 2 illustrates an exemplary computerized method for allowing a userto switch between interfacing with a service through a networked deviceor a mobile device using the mobile device's message service;

FIG. 3 illustrates an exemplary computerized method for allowing a userto switch between interfacing with a service through a networked deviceor a mobile device using the mobile device's message service; and

FIG. 4 illustrates an exemplary diagram of an agent console foraccessing services provided by a remote server.

DETAILED DESCRIPTION

Referring now to the drawings, in which like numerals refer to likecomponents or steps, there are disclosed broad aspects of variousexemplary embodiments.

In general overview, computerized systems and methods are provided forallowing a user to switch between interfacing with a service (e.g., aservice provided by a remotely-located server) through a devicenetworked to the service (e.g., a desktop, personal computer, laptop,etc. connected to the server via the interne or other type of network)or a mobile device using the mobile device's message service (e.g.,short messaging service, blackberry messaging service, etc.). Further,the user can access the full range of services provided by the remotecomputer using the mobile device's messaging service.

While various examples described herein use the term “agent,” the termis intended to be used broadly and should be understood to refer to auser of the services (e.g., provided by a remote server). Therefore, thephase “occasionally-connected user interface” addresses an interfacethat allows a user of a service to interface with the service usingvarious devices (e.g., the agent can connect to the services using hisdesktop, mobile phone, and/or other devices via different communicationinterfaces).

FIG. 1 illustrates an exemplary system 100 for supporting anoccasionally-connected user interface. The system 100 includes multiplecomponents connected through the network 103. The system 100 includes acommunication server 101, a visitor's computer 110, an agent computer120, a mobile device 130, an SMS gateway 131, and an agent console 140.The visitor's computer 110 can include a (visitor's) web browser 111 anda tag module 113. The agent computer 120 can similarly include a(nagent) web browser 121. The browser 121 can display the agent console140, which can include an interface 141 that provides a set of featuresto the agent.

The communication server 101 provides a number of services to remoteusers (e.g., agent computer 120, via the agent console 140, mobiledevice 130, etc.). The agent can interact with the services to establishcommunications with the visitor computer 110 (and/or other visitors, notshown). For example, the communication server 101 can initiate aconnection between an agent (e.g., using the agent computer 120) and awebsite visitor (e.g., using the visitor computer 110) through thenetwork 103. For example, the communication server 101 can initiate anonline chat session between the visitor computer 110 and either themobile device 130 (used by the agent) or the agent computer 120 (used bythe agent). Over the course of the chat session, the agent canseamlessly switch, via the communication server 101, which device theagent is using to communicate with the visitor computer (e.g., switchfrom using the agent computer 120 to chat with the visitor computer 110,to using the mobile device 130) such that the visitor does not detectthe agent's change of device (e.g., as indicated with dotted line 150).

Communication server 101 can be, for example, a single web server with aprocessor and memory. In some embodiments, the communication server 101can include multiple web servers connected directly or through thenetwork 103. The communication server 101 can be configured to provide anumber of services to users (e.g., to agent computer 120 and/or otheragent computers, not shown). The services can include, for example,services that allow the agent to provide customer service, help, and/orrecommendations to the visitors (e.g., visitors to a website) and tomanage the associated connections with visitors. For example, thecommunication server 101 can establish a communication between thevisitor computer 110 and the agent computer 120. For example, thecommunication server 101 can establish an online chat help sessionbetween the agent computer 120 and the visitor computer 110 (e.g., inresponse to a visitor clicking a chat button on a web page displayed inthe visitor browser 111, automatically based on predetermined criteriaconfigured in the tag module 113, etc.).

The communication server 101 can be configured to provide certainfunctionality to the agent through the agent console 140 via the set offeatures 141. For example, if an agent types a message using the agentconsole 140 to send to a visitor, the communication server 101 canprocess the agent's actions and transmit the message to the visitor(e.g., via a an online chat session established by the communicationserver 101). The agent console 140 is described in further detail below.The communication server 101 is further configured to provide the samefunctionality to the agent through the agent's mobile device using amessaging service.

Network 103 can be, for example, a packet-switching network that is ableto forward packets to other devices based on information included in thepacket. The network 103 can provide, for example, phone and/or Internetservice to various devices, like the user device 101 and the agentcomputer 120 in communication with the network 103.

The visitor computer 110 can be a personal computer (e.g., a PC or alaptop) including a processor and memory. In some examples, the visitorcomputer 110 is a smart phone, a personal digital assistant, a tabletPC, and/or any another computing device capable of interacting with thecommunication server 101. In some examples, the visitor computer 110 isa computing device capable of viewing web content using a web browser(e.g., the visitor browser 111). The web content can be served by one ormore web content servers (not shown). The web content can cause the tagmodule 113 to be loaded in the visitor browser 111, as is described, forexample, in U.S. patent application Ser. No. 13/080,324, entitled“System and Method for Dynamically Enabling Customized Web Content andApplications,” which is hereby incorporated by reference herein in itsentirety.

Agent computer 120 can be a personal computer with a processor andmemory that is sufficient to execute the agent console 140 (e.g.,through the agent browser 121 as a web application, or as a stand-aloneapplication on the agent computer 120). Mobile device 130 can be, forexample, a phone, tablet, or similar portable device that is able tosend and receive messages. In some embodiments, the mobile device 130 isa device capable of sending and receiving text messages through amessaging service, such as the short messaging service (SMS).

The agent console 140 is, for example, an interface that allows theagent (using the agent computer 120) to perform various functions byaccessing services provided by the communication server 101. Thesefunctions can be related to interacting with visitors. For example, thefunctions can include (i) monitoring a number of visitors (e.g.,visitors to a website) that have requested assistance from agents (andthe status thereof, such as chatting, waiting for chat, etc.), (ii)chatting with a particular visitor, (iii) placing an outbound call tothe visitor, (iv) emailing with a visitor, (v) drafting notes (e.g., toassociate with a visitor (such as notes about a chat or call) or for theagent's use), (vi) viewing alerts presented to the visitor (e.g., pop-upads, invitations for online chat, etc.), (vii) controlling a ticketassociated with a visitor (e.g., to track the progress of agentinteraction with a visitor), (viii) viewing the web history of thevisitor, and/or the like.

FIG. 4 shows an example of an agent console 400. The agent console 400includes a menu bar 402, an action bar 404, a visitor list 406, aninteraction portion 408, and an information portion 410. The visitorlist 406 provides information for visitors (e.g., that are in-line tointeract with an agent, or being assisted by an agent), including theircountry, contact ID, ticket ID, skill, state, operator, current webpage, subject, time in the website, and duration of the interaction withan agent). An agent can select a particular visitor in the visitor list,as shown by the highlighted visitor 412 with a contact ID “RobynMacNab.” Once selected, the interaction portion 408 and informationportion 410 are populated with information for the visitor 412, as shownin the agent console 400.

The interaction portion 408 includes a chat function 414 that allows theagent to chat with the selected visitor (e.g., as shown in the chatconsole 414A), a phone function 416 that allows the agent to call thevisitor, an email function 418 that allows the agent to email with thevisitor, a note function 420 that allows the agent to take notes, and alog call function 422 that allows the agent to log information about acall (e.g., made with the phone function 416). The information portion410 includes various tabs that provide information about a selectedvisitor, including alerts, InteliResponse, Info, Navigation, PageViewer, and Knowledgebase Monitor. For example, the information tab 410Ashows various information for the selected visitor Robyn MacNab 412.Agent console 400 is an illustrative example of an agent console, andone of skill in the art can appreciate that different features can beincluded and/or excluded from the agent console without departing fromthe spirit of the invention.

The system 100 is an example of a computerized system that is speciallyconfigured to perform the computerized methods described herein.However, the system structure and content recited with regard to FIG. 1are for exemplary purposes only and are not intended to limit otherexamples to the specific structure shown in FIG. 1. As will be apparentto one of ordinary skill in the art, many variant system structures canbe architected without departing from the computerized systems andmethods described herein.

In addition, information may flow between the elements, components andsubsystems described herein using any technique. Such techniquesinclude, for example, passing the information over the network usingstandard protocols, such as TCP/IP, passing the information betweenmodules in memory and passing the information by writing to a file,database, or some other non-volatile storage device. In addition,pointers or other references to information may be transmitted andreceived in place of, or in addition to, copies of the information.Conversely, the information may be exchanged in place of, or in additionto, pointers or other references to the information. Other techniquesand protocols for communicating information may be used withoutdeparting from the scope of the invention.

FIG. 2 illustrates an exemplary computerized method 200 for allowing auser (e.g., an agent) to switch between interfacing with a service(e.g., provided by the communication server 101) through a network(e.g., over the network 103 via the agent console 140) or messageservice (e.g., via mobile device 130). Referring to FIG. 1, thecommunication server 101 can execute method 200 to switch devices whensupporting a communication between the agent (e.g., the agent via theagent console 140 on agent computer 120) and the visitor's computer 110.Method 200 starts at step 201 and proceeds to step 203, where thecommunication server 101 initiates a communication (e.g., a chatsession) between the agent and the customer. At step 205, thecommunication server 101 receives (e.g., from the agent console 140) arequest to transfer the agent from using the agent console 140 tocommunicate with the visitor, to using a mobile device 130 tocommunicate with the visitor (e.g., such that the user can invoke thefunctionality of the agent console 140 using the mobile device). At step207, the communication server 101 configures the communicationservice(s) to interface with the mobile device through a messagingservice, such that the agent can invoke functionality of the agentconsole (e.g., the same functionality provided through the agent console140). At step 209, the communication server 101 communicates agentconsole information to the agent's mobile device through the messagingservice.

While method 200 is described with step 203, the agent need not have acommunication initiated between the agent and a customer to switch theagent's device (e.g., as described with reference to steps 205-209).Referring to step 203, for example, the communication server 101 can setup an online chat between the agent computer 120 and the visitor at thevisitor computer 110. The communication server 101 can set up the chatsession such that both the agent computer 120 and the visitor computer110 communicate through the network 103. For example, the communicationserver 101 can provide a chat window to the visitor through the visitorbrowser 111 for the visitor to participate in the chat session. Theagent can use the agent console 140 to participate in the chat session(e.g., using the chat function 414 of the agent console 400 shown inFIG. 4).

Referring to step 205, the agent can indicate (e.g., via the agentconsole 140) that the agent would like to switch to interacting with theagent console functionality through mobile device 130 instead of throughthe agent computer 120. For example, the communication server 101receives, from the agent computer 120 (e.g., via user selection of afunction on the agent console 140), a request to enable the agent tointerface with the services provided by the communication server 101through the mobile device 130 (e.g., using short message service (SMS))instead of through the agent computer 120 (e.g., using the agent console140).

For example, the communication server 101 can receive a request from theagent console 140 to change a status of the agent using the agentcomputer 120 from “online” mode (e.g., connected to the communicationserver 101 via a computer network) to “mobile” mode (e.g., connected tothe communication server 101 via a network that includes telephonecomponents, such as SMS gateway 131). The communication server 101 canallow the user to access the agent console functionality (e.g., asprovided by the communication server 101) through SMS messaging (e.g.,for both messages being sent to the communication server 101 andtransmitted from the communication server 101 to the mobile device 130).

In some embodiments, the communication server 101 can receive therequest from the agent computer 120. In such examples, the communicationserver 101 can first suspend messages from being sent to the agentcomputer 120 before proceeding to step 207. In some embodiments, thecommunication server 101 receives the transfer request from the mobiledevice 130 (e.g., as is described below with respect to FIG. 3). In suchexamples, the communication server 101 can proceed directly to step 207.

The agent can request the transfer using the agent console 140. Forexample, the agent can change a status associated with the agent from“online” to “mobile” to switch to using the mobile device 130. Inresponse, the communication server 101 can switch to interacting withthe mobile device 130 via SMS (e.g., all communications, such as chatmessages and control information, are transmitted to the mobile device130 via SMS). If, for example, the agent has incoming chats, thecommunication server 101 can support multiple chats via SMScapabilities.

Referring to step 207, the communication server 101 configures theservices it is providing to interface with the agent via the mobiledevice 130. In some examples, the communication server 101 includes anapplication programmer interface (API) that is used to invoke theservices provided by the communication server 101. The communicationserver 101 can configure the API, if necessary, to interface with themobile device 130 instead of the agent console 140.

In some examples, the communication server 130 interfaces with themobile device 130 through SMS. For example, when the communicationserver 101 receives the transfer request in step 205, the communicationserver 101 can establish a connection between the visitor's computer 110and the mobile device 130 via the SMS gateway 131.

By using SMS instead of a stand-alone application or program allows theuser to continue using the full-range of services provided by thecommunication server 130 without bogging down the resources of themobile device 130. While some examples herein describe using SMS as themessaging service, other messaging services can also be used. Forexample, depending on the type of mobile device 130 used (e.g., iPhone,iPad, Blackberry, Android) the communication server 101 can transmitmessages using the specific messaging service employed by the mobiledevice 130. For example, the messaging can be performed using Java,Blackberry Messenger (BBM), multimedia messaging service (MMS), and/orother services that do not require running a separate program orexecutable on the mobile device 130.

The information the communication server 101 transmits to the mobiledevice 130 can include identifiers for the information. The identifierscan allow the agent to understand the meaning of the information as itrelates to services provided by the communication server 101 (e.g.,whether the information relates to chat, relates to control functions,etc.). For example, for chat sessions, each message can be prefixed withthe chat number (e.g., “chat 1”, “chat 2”, etc.), a chat name (e.g.,“Robyn MacNab” as sown in FIG. 4), or other identifier. The identifierscan allow the agent to distinguish between different chats, and toidentify the chats when switching back to using the agent computer 120.Similarly, messages transmitted from the mobile phone 130 to thecommunication server 101 can include an identifier that thecommunication server 101 uses to process the messages. The identifierscan be used so the mobile phone 130 can use the full range of servicesoffered by the communication server 101 (e.g., as if using the agentconsole 140) from the mobile device 130. For example, functions theagent can use via the mobile device 130 (e.g., via messaging withoutinstalling a stand-alone application) include searching for a visitor,sending a chat invites to a visitor (e.g., while the visitor is on awebsite), requesting and receiving a real-time administrative reportabout the agent's account with the communication server (e.g., to getinformation such as that shown in the visitor list 406, such as whichchat sessions are available and which agent(s) are interacting withvisitors), and/or other functionality (e.g., such as that which can beutilized through the agent console 400).

Referring to step 209, the communication server 101 communicates agentconsole information to the agent's mobile device 130 through themessaging service. The information can include, for example chatinformation. The communication server 101 can perform step 207 such thatstep 209 occurs without any impact on the visitor. For example, thecommunication server 101 can transition to communicating with theagent's mobile device 130 through SMS while still communicatinginformation (e.g., chat information) through the network 100 to thevisitor computer 110 such that the visitor is unaware the agent switchedto using the mobile device 130 instead of the agent computer 120.

The information can include control information. For example, thecommunication server 101 can communicate control information through SMSto the mobile device 130 such that the agent can use the fullfunctionality provided by the communication server 101 (e.g., thatexplained with reference to the agent console 400 FIG. 4) using SMS. Forexample, the control information can allow the agent to (i) monitorvisitors (e.g., visitors to a website), (ii) establish a chat with aparticular visitor, (iii) place an outbound call to the visitor, (iv)email with a visitor, (v) draft notes, (vi) view alerts presented to thevisitor, (vii) control a ticket associated with a visitor, (viii)viewing the web history of the visitor, and/or other functions (e.g., asdescribed with reference to FIG. 4).

For example, the agent can start a new online chat with a new visitorvia the agent's mobile device 130. Using SMS for this example, thecommunication server 101 receives an SMS request from the agent's mobiledevice 130 to start a chat conversation with the new user (e.g., using asecond visitor computer (not shown). The communication server 101 cancommunicating chat information through SMS to the agent's mobile device130 and communicate chat information to the visitor computer 110. Forexample, the communication server 101 can receive a chat message fromthe visitor computer 110 with a destination address being that of theagent. The communication server 101 can determine that the agent isusing the mobile device 130, and transmit, using SMS, the chat message,and a chat identifier to the first user's mobile device. The agent canuse the chat identifier to know which visitor transmitted the chatmessage. The communication server 101 can receive both chat messagessent from the mobile device 130, as well as control messages from themobile device 130 (e.g., via the gateway 131) in order to provide theagent full functionality of the agent console from the mobile device130.

FIG. 3 illustrates an exemplary computerized method 300 for allowing auser to switch between interfacing with a service through a network ormessage service. Referring to FIG. 1, method 300 starts at step 301 andproceeds to step 303, where the communication server 101 initiates acommunication (e.g., a chat service) between the agent's mobile device130 and the visitor computer 110. For example, the communication server101 can initiate a chat session by invoking a chat service on both themobile device 130 (e.g., via SMS) that is controlled by the agent andthe visitor's computer 110 (e.g., via a graphical chat window).

At step 305, the communication server 101 receives a request to transferthe agent's interaction with the agent console functionality from themobile device 130 (e.g., via SMS messaging) to the agent computer 120(or another computer, not shown). For example, if the agent iscommunicating with the visitor via online chat, the communication server101 can receive a request from the agent's mobile device 130 to maintainthe chat service with the visitor, but to interface with the chatservice at the agent computer 120 instead of the mobile device 130.

At step 307, the communication server 101 configures the services tointerface with the agent at the agent computer 120. For example, tomaintain an existing chat with the visitor computer 110 during thetransfer, the communication server 101 can configure the chat service tointerface with the agent console 104 being executed on the agentcomputer 120 (e.g., via the chat console 414A of FIG. 4). Thecommunication server 101 can communicate chat information through thenetwork 103 to the agent computer 120 and communicate chat informationthrough the network 103 to the visitor computer 110 such that thevisitor is unaware that the agent switched to using the agent computer120 instead of the mobile device 130 (e.g., the visitor does not haveany concept of what device the agent is using to communicate with thevisitor). The communication server 101 can communicate control throughthe network 103 to the agent computer such that the first user can usethe full functionality of the chat service using the network.

The communication server 101 can allow the agent to interface with theservices provided by the communication server 101 while preserving anysettings, communications, etc. that the agent has configured via one ormore devices. For example, if a user invokes a first setting while usingthe mobile device 130, and then invokes a second setting after switchingto the agent computer 120, the agent still has the first settingconfigured by the mobile device 130. Additionally, the communicationserver 101 can maintain any communications between the agent and thirdparties (e.g., the visitor computer 110 and/or any other computers). Forexample, the communication server 101 can maintain any existing chatsessions between the agent and the visitor computer 110 and/or any otherusers.

Allowing the agent to interface with the agent console functionalitythrough the mobile device 130 using a messaging service can increaseperformance of the mobile device 130. For example, requiring the mobiledevice 130 to run an application (e.g., as an app for an iPhone, whichcontrols and manages all the calls to the communication server 101(e.g., in order to receive notifications and incoming chat)) instead ofusing a messaging service (e.g., SMS) would consume a lot of the mobilephone's resources. The communication server 101 can provide access tothe full agent console functionality via messaging, which does notconsume much resources of the mobile device 130.

As an illustrative example, assume the agent is a car dealer, and theagent is in his office chatting with potential customers online. Thenthe car dealer notices a person browsing the vehicles in his lot, andneeds to leave his computer to assist the customer. To maintain thechats with the online customers, the car dealer sets his profile to“mobile,” (e.g., using the agent console 400 of FIG. 4) and enters hisphone number as a mobile address at which to communicate with the cardealer. Once the car dealer adjusts his profile, he can go out to hislot and get SMS notification(s) for any incoming chat(s), and/or use SMSmessages to control other aspects of the service. If, for example, theSMS notification is a request to chat with a new customer that the cardealer was not already chatting with, the car dealer can reply via SMSto take the new conversation. The chat console 101 then sends theagent's mobile device the chat (e.g., “Good afternoon, can I get pricingon a new Toyota?”). If the car dealer finishes helping the customer onthe lot, the car dealer can go back inside to his desktop, and continuehis chat(s) from his desktop. Thus, SMS on the mobile phone operateslike a “light” console to the services provided by the communicationserver 101. It doesn't take any resources of your mobile device, butkeeps you updated and connected always.

The above-described techniques can be implemented in digital and/oranalog electronic circuitry, or in computer hardware, firmware,software, or in combinations of them. The implementation can be as acomputer program product, i.e., a computer program tangibly embodied ina machine-readable storage device, for execution by, or to control theoperation of, a data processing apparatus, e.g., a programmableprocessor, a computer, and/or multiple computers. A computer program canbe written in any form of computer or programming language, includingsource code, compiled code, interpreted code and/or machine code, andthe computer program can be deployed in any form, including as astand-alone program or as a subroutine, element, or other unit suitablefor use in a computing environment. A computer program can be deployedto be executed on one computer or on multiple computers at one or moresites.

Method steps can be performed by one or more processors executing acomputer program to perform functions of the invention by operating oninput data and/or generating output data. Method steps can also beperformed by, and an apparatus can be implemented as, special purposelogic circuitry, e.g., a FPGA (field programmable gate array), a FPAA(field-programmable analog array), a CPLD (complex programmable logicdevice), a PSoC (Programmable System-on-Chip), ASIP(application-specific instruction-set processor), or an ASIC(application-specific integrated circuit). Subroutines can refer toportions of the computer program and/or the processor/special circuitrythat implement one or more functions.

Processors suitable for the execution of a computer program include, byway of example, both general and special purpose microprocessors, andany one or more processors of any kind of digital or analog computer.Generally, a processor receives instructions and data from a read-onlymemory or a random access memory or both. The essential elements of acomputer are a processor for executing instructions and one or morememory devices for storing instructions and/or data. Memory devices,such as a cache, can be used to temporarily store data. Memory devicescan also be used for long-term data storage. Generally, a computer alsoincludes, or is operatively coupled to receive data from or transferdata to, or both, one or more mass storage devices for storing data,e.g., magnetic, magneto-optical disks, or optical disks. A computer canalso be operatively coupled to a communications network in order toreceive instructions and/or data from the network and/or to transferinstructions and/or data to the network. Computer-readable storagedevices suitable for embodying computer program instructions and datainclude all forms of volatile and non-volatile memory, including by wayof example semiconductor memory devices, e.g., DRAM, SRAM, EPROM,EEPROM, and flash memory devices; magnetic disks, e.g., internal harddisks or removable disks; magneto-optical disks; and optical disks,e.g., CD, DVD, HD-DVD, and Blu-ray disks. The processor and the memorycan be supplemented by and/or incorporated in special purpose logiccircuitry.

To provide for interaction with a user, the above described techniquescan be implemented on a computer in communication with a display device,e.g., a CRT (cathode ray tube), plasma, or LCD (liquid crystal display)monitor, for displaying information to the user and a keyboard and apointing device, e.g., a mouse, a trackball, a touchpad, or a motionsensor, by which the user can provide input to the computer (e.g.,interact with a user interface element). Other kinds of devices can beused to provide for interaction with a user as well; for example,feedback provided to the user can be any form of sensory feedback, e.g.,visual feedback, auditory feedback, or tactile feedback; and input fromthe user can be received in any form, including acoustic, speech, and/ortactile input.

The above described techniques can be implemented in a distributedcomputing system that includes a back-end component. The back-endcomponent can, for example, be a data server, a middleware component,and/or an application server. The above described techniques can beimplemented in a distributed computing system that includes a front-endcomponent. The front-end component can, for example, be a clientcomputer having a graphical user interface, a Web browser through whicha user can interact with an example implementation, and/or othergraphical user interfaces for a transmitting device. The above describedtechniques can be implemented in a distributed computing system thatincludes any combination of such back-end, middleware, or front-endcomponents.

The computing system can include clients and servers. A client and aserver are generally remote from each other and typically interactthrough a communication network. The relationship of client and serverarises by virtue of computer programs running on the respectivecomputers and having a client-server relationship to each other.

The components of the computing system can be interconnected by any formor medium of digital or analog data communication (e.g., a communicationnetwork). Examples of communication networks include circuit-based andpacket-based networks. Packet-based networks can include, for example,the Internet, a carrier internet protocol (IP) network (e.g., local areanetwork (LAN), wide area network (WAN), campus area network (CAN),metropolitan area network (MAN), home area network (HAN)), a private IPnetwork, an IP private branch exchange (IPBX), a wireless network (e.g.,radio access network (RAN), 802.11 network, 802.16 network, generalpacket radio service (GPRS) network, HiperLAN), and/or otherpacket-based networks. Circuit-based networks can include, for example,the public switched telephone network (PSTN), a private branch exchange(PBX), a wireless network (e.g., RAN, bluetooth, code-division multipleaccess (CDMA) network, time division multiple access (TDMA) network,global system for mobile communications (GSM) network), and/or othercircuit-based networks.

Devices of the computing system and/or computing devices can include,for example, a computer, a computer with a browser device, a telephone,an IP phone, a mobile device (e.g., cellular phone, personal digitalassistant (PDA) device, laptop computer, electronic mail device), aserver, a rack with one or more processing cards, special purposecircuitry, and/or other communication devices. The browser deviceincludes, for example, a computer (e.g., desktop computer, laptopcomputer) with a world wide web browser (e.g., Microsoft® InternetExplorer® available from Microsoft Corporation, Mozilla® Firefoxavailable from Mozilla Corporation). A mobile computing device includes,for example, a Blackberry®. IP phones include, for example, a Cisco®Unified IP Phone 7985G available from Cisco System, Inc, and/or a Cisco®Unified Wireless Phone 7920 available from Cisco System, Inc.

One skilled in the art will realize the invention may be embodied inother specific forms without departing from the spirit or essentialcharacteristics thereof. The foregoing embodiments are therefore to beconsidered in all respects illustrative rather than limiting of theinvention described herein. Scope of the invention is thus indicated bythe appended claims, rather than by the foregoing description, and allchanges that come within the meaning and range of equivalency of theclaims are therefore intended to be embraced therein.

1-9. (canceled)
 10. A computer-implemented method, comprising:transmitting, by a server, interface data, wherein when the interfacedata is received at an agent device, the interface data causes the agentdevice to display an interface, and wherein the interface is associatedwith a set of executable functions; receiving a conversation activationrequest, wherein the conversation activation request initiates acommunication session between the agent device and a customer device;facilitating the communication session between the agent device and thecustomer device, wherein facilitating the communication session betweenthe agent device and the customer device includes routing one or moremessages between the agent device and the customer device; receiving atransfer request, wherein the transfer request identifies a mobile agentdevice associated with the agent device, and wherein when the transferrequest is received from the agent device, a communication link isestablished between the customer device and the mobile agent deviceusing a messaging service; transmitting agent console information overthe communication link, wherein when the agent console information isreceived at the mobile agent device, the set of executable functionsassociated with the interface is available for execution at the mobileagent device; and facilitating the communication session between themobile agent device and the customer device, wherein facilitating thecommunication session between the mobile agent device and the customerdevice includes sending and receiving data using the messaging service.11. The computer-implemented method of claim 10, wherein when themessage includes control information, the control information causesexecution of a function of the set of executable functions.
 12. Thecomputer-implemented method of claim 10, wherein facilitating thecommunication session between the mobile agent device and the customerdevice further includes using the messaging service to transmit a shortmessage service (SMS) message or a push notification to the mobile agentdevice.
 13. The computer-implemented method of claim 10, wherein themessage includes control information, wherein the control informationincludes an identifier that corresponds to a function of the set offunctions, and wherein when the control information is received at theserver, the identifier is used to identify and execute the function. 14.The computer-implemented method of claim 10, wherein facilitating thecommunication session between the customer device and the mobile agentdevice includes routing the one or more messages to a server associatedwith the messaging service for transmitting to the mobile agent deviceas one or more SMS messages or push notifications.
 15. Thecomputer-implemented method of claim 10, wherein the agent consoleinformation is transmitted to the mobile agent device using themessaging service, and wherein the agent console information enables theset of executable functions to be executed at the mobile agent device.16. The computer-implemented method of claim 10, further comprising:receiving control information, wherein when the control information isreceived from the mobile agent device, determining a function forexecution based on the control information, wherein determining thefunction includes extracting an identifier included in the controlinformation, and wherein the identifier corresponds to the function. 17.A system, comprising: one or more data processors; and a non-transitorycomputer-readable storage medium containing instructions which, whenexecuted on the one or more data processors, cause the one or more dataprocessors to perform operations including: transmitting, by a server,interface data, wherein when the interface data is received at an agentdevice, the interface data causes the agent device to display aninterface, and wherein the interface is associated with a set ofexecutable functions; receiving a conversation activation request,wherein the conversation activation request initiates a communicationsession between the agent device and a customer device; facilitating thecommunication session between the agent device and the customer device,wherein facilitating the communication session between the agent deviceand the customer device includes routing one or more messages betweenthe agent device and the customer device; receiving a transfer request,wherein the transfer request identifies a mobile agent device associatedwith the agent device, and wherein when the transfer request is receivedfrom the agent device, a communication link is established between thecustomer device and the mobile agent device using a messaging service;transmitting agent console information over the communication link,wherein when the agent console information is received at the mobileagent device, the set of executable functions associated with theinterface is available for execution at the mobile agent device; andfacilitating the communication session between the mobile agent deviceand the customer device, wherein facilitating the communication sessionbetween the mobile agent device and the customer device includes sendingand receiving data using the messaging service.
 18. The system of claim17, wherein when the message includes control information, the controlinformation causes execution of a function of the set of executablefunctions.
 19. The system of claim 17, wherein facilitating thecommunication session between the mobile agent device and the customerdevice further includes using the messaging service to transmit a shortmessage service (SMS) message or a push notification to the mobile agentdevice.
 20. The system of claim 17, wherein the message includes controlinformation, wherein the control information includes an identifier thatcorresponds to a function of the set of functions, and wherein when thecontrol information is received at the server, the identifier is used toidentify and execute the function.
 21. The system of claim 17, whereinfacilitating the communication session between the customer device andthe mobile agent device includes routing the one or more messages to aserver associated with the messaging service for transmitting to themobile agent device as one or more SMS messages or push notifications.22. The system of claim 17, wherein the agent console information istransmitted to the mobile agent device using the messaging service, andwherein the agent console information enables the set of executablefunctions to be executed at the mobile agent device.
 23. The system ofclaim 17, wherein the operations further comprise: receiving controlinformation, wherein when the control information is received from themobile agent device, determining a function for execution based on thecontrol information, wherein determining the function includesextracting an identifier included in the control information, andwherein the identifier corresponds to the function.
 24. Acomputer-program product tangibly embodied in a non-transitorymachine-readable storage medium, including instructions configured tocause a data processing apparatus to perform operations including:transmitting, by a server, interface data, wherein when the interfacedata is received at an agent device, the interface data causes the agentdevice to display an interface, and wherein the interface is associatedwith a set of executable functions; receiving a conversation activationrequest, wherein the conversation activation request initiates acommunication session between the agent device and a customer device;facilitating the communication session between the agent device and thecustomer device, wherein facilitating the communication session betweenthe agent device and the customer device includes routing one or moremessages between the agent device and the customer device; receiving atransfer request, wherein the transfer request identifies a mobile agentdevice associated with the agent device, and wherein when the transferrequest is received from the agent device, a communication link isestablished between the customer device and the mobile agent deviceusing a messaging service; transmitting agent console information overthe communication link, wherein when the agent console information isreceived at the mobile agent device, the set of executable functionsassociated with the interface is available for execution at the mobileagent device; and facilitating the communication session between themobile agent device and the customer device, wherein facilitating thecommunication session between the mobile agent device and the customerdevice includes sending and receiving data using the messaging service.25. The computer-program product of claim 24, wherein when the messageincludes control information, the control information causes executionof a function of the set of executable functions.
 26. Thecomputer-program product of claim 24, wherein facilitating thecommunication session between the mobile agent device and the customerdevice further includes using the messaging service to transmit a shortmessage service (SMS) message or a push notification to the mobile agentdevice.
 27. The computer-program product of claim 24, wherein themessage includes control information, wherein the control informationincludes an identifier that corresponds to a function of the set offunctions, and wherein when the control information is received at theserver, the identifier is used to identify and execute the function. 28.The computer-program product of claim 24, wherein facilitating thecommunication session between the customer device and the mobile agentdevice includes routing the one or more messages to a server associatedwith the messaging service for transmitting to the mobile agent deviceas one or more SMS messages or push notifications.
 29. Thecomputer-program product of claim 24, wherein the agent consoleinformation is transmitted to the mobile agent device using themessaging service, and wherein the agent console information enables theset of executable functions to be executed at the mobile agent device.